5d427b
@@ -65,13 +65,10 @@
class ModelControllerLock {
         private final AtomicReference<Object> permitHolder = new AtomicReference<>(null);
 
         @Override
-        protected boolean tryAcquire(int permit) {
-            final int c = getState();
-            if (c == 0) {
-                if (compareAndSetState(0, 1)) {
-                    permitHolder.set(permit);
-                    return true;
-                }
+        protected synchronized boolean tryAcquire(int permit) {
+            if (compareAndSetState(0, 1)) {
+                permitHolder.set(permit);
+                return true;
             } else if (permitHolder.get().equals(permit)) {
                 for (;;) {
                     int current = getState();
@@ -87,7 +84,7 @@
class ModelControllerLock {
         }
 
         @Override
-        protected boolean tryRelease(int permit) {
+        protected synchronized boolean tryRelease(int permit) {
             final Object value = permitHolder.get();
             if (value == null) {
                 throw new IllegalStateException();
